1
Vita degli Oggetti Locali: Automatici vs. Statici
AI037Lesson 10
00:00

Nel teatro del C++, ogni oggetto ha una durata di vita—la vita dell'oggetto. Questo definisce la durata per cui un oggetto occupa spazio in memoria. All'interno di un corpo della funzione, il comportamento predefinito per variabili locali è essere automatico, ma possiamo comandarli per essere statico per cambiare il loro destino.

1. Oggetti Automatici

Per impostazione predefinita, le variabili locali sono oggetti automatici. Vengono creati (inizializzati) quando l'esecuzione della funzione esecuzione raggiunge la loro definizione e muoiono (vengono recuperati) quando il blocco termina. Risiedono nello stack, rendendoli sempre nuovi per ogni chiamata.

2. Oggetti Statici Locali

Quando si utilizza la statico parola chiave, si crea un oggetto statico locale. Vengono inizializzati solo una volta—prima della prima volta che il controllo passa attraverso la loro definizione—e rimangono attivi fino al termine del programma. Ciò permette a una funzione di "ricordare" lo stato senza contaminare lo spazio globale.

Stack (Automatico)[ temp_val ]Distrutto alla fine del bloccoSegmento Dati (Statico)[ persistent_val ]Vive fino all'uscita dal programma

3. La Trappola della Ricorsione

In una funzione ricorsiva, ogni iterazione ricorsiva crea un'istanza distinta dei suoi oggetti automatici. Se la ricorsione è profonda, questo consuma uno spazio significativo sullo stack. Al contrario, un statico oggetto viene condiviso a tutti i livelli di quella ricorsione.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>